package a0.commonAPI.Math;

import org.junit.Test;

import java.util.Random;

/**
 *  作业：编写方法 生成 0.00% ~ 60.00% 的字符串
 */
public class MathDemo {

    /**
     * random 取得一个大于或者等于0.0小于不等于1.0的随机数
     */
    @Test
    public void test5() {
        /**
         * 开闭区间 ：
         *      开区间符号：(
         *      闭区间符号：]
         *     案例： [2,3) 等于 2 <= x < 3
         *           (2,3] 等于 2 < x <= 3
         *           [8,100] 等于 8 <= x <= 100
         *           (56,69] 等于 56 < x <= 69
         *
         */

        //大于0小于1的double类型的数  [0,1)
        System.out.println(Math.random());
        //大于0小于2的double类型的数 [0,2)
        System.out.println(Math.random() * 2);
        //大于2小于3的double类型的数 [2,3)
        System.out.println(Math.random() + 2);


    }


    /**
     * Math.sqrt()//计算平方根
     * Math.cbrt()//计算立方根
     * Math.pow(a, b)//计算a的b次方
     * Math.max( , );//计算最大值
     * Math.min( , );//计算最小值
     * abs求绝对值
     */
    @Test
    public void test() {
        /**
         *   数值的平方运算：
         *          5的平方（2）：  5*5
         *          n的平方： n*n  n乘以2次
         *          3的立方（3）：3*3*3
         *          n的立方： n*n*n  n乘以3次
         *   数值的k开方运算：
         *          16 开平方： x*x = 16  x=4
         *          8 开立方： x*x*x = 8  x=2
          */

        //开平方根 4.0
        System.out.println(Math.sqrt(16));
        //开立方根 2.0
        System.out.println(Math.cbrt(8));
        //pow(n, m)  n的m次方：n相乘m次   9.0
        System.out.println(Math.pow(3, 2));
        //返回最大值
        System.out.println(Math.max(2.3, 4.5));//4.5
        //返回最小值
        System.out.println(Math.min(2.3, 4.5));//2.3
        //abs求绝对值
        System.out.println(Math.abs(-10.4));    //10.4
        System.out.println(Math.abs(10.1));     //10.1


    }

    /**
     * round 四舍五入，float时返回int值，double时返回long值
     */
    @Test
    public void test1() {

        System.out.println(Math.round(10.1));   //10
        System.out.println(Math.round(10.7));   //11
        System.out.println(Math.round(10.5));   //11
        System.out.println(Math.round(10.51));  //11
        System.out.println(Math.round(-10.5));  //-10
        System.out.println(Math.round(-10.51)); //-11
        System.out.println(Math.round(-10.6));  //-11
        System.out.println(Math.round(-10.2));  //-10

    }


    /**
     * rint 返回接近整型的数据，在向上转型为Double类型
     */
    @Test
    public void test2() {
        System.out.println(Math.rint(10.1));    //10.0
        System.out.println(Math.rint(10.7));    //11.0
        System.out.println(Math.rint(11.5));    //12.0
        System.out.println(Math.rint(10.5));    //10.0
        System.out.println(Math.rint(10.51));   //11.0
        System.out.println(Math.rint(-10.5));   //-10.0
        System.out.println(Math.rint(-11.5));   //-12.0
        System.out.println(Math.rint(-10.51));  //-11.0
        System.out.println(Math.rint(-10.6));   //-11.0
        System.out.println(Math.rint(-10.2));   //-10.0
    }

    /**
     * floor地板的意思，就是返回接近整型的数值，该数值比该数小
     * 向下取整
     */
    @Test
    public void test3() {
        System.out.println(Math.floor(-10.1));  //-11.0
        System.out.println(Math.floor(10.7));   //10.0
        System.out.println(Math.floor(-0.7));   //-1.0
        System.out.println(Math.floor(0.0));    //0.0
        System.out.println(Math.floor(-0.0));   //-0.0
    }


    /**
     * ceil天花板的意思，就是返回大的值
     * 向下取整
     */
    @Test
    public void test4() {

        System.out.println(Math.ceil(-10.1));   //-10.0
        System.out.println(Math.ceil(10.7));    //11.0
        System.out.println(Math.ceil(-0.7));    //-0.0
        System.out.println(Math.ceil(0.0));     //0.0
        System.out.println(Math.ceil(-0.0));    //-0.0
        System.out.println(Math.ceil(-1.7));    //-1.0
    }
}


